package com.gjh.study.algorithm4.sort;

/**
 * 选择排序：依次将数组中的最小值与数组第一个位置的值交换
 * 即每次都将剩余部分数组的最小值放到前面来
 */
public class Selection extends SortBase {
    @Override
    public void sort(Comparable[] a) {
        int N = a.length;
        for (int i = 0; i < N; i++) {
            // 假定当前值为最小值
            int min = i;
            // 从第 i+1 个开始，依次找到后面最小的值
            for (int j = i + 1; j < N; j++) {
                if (less(a[j], a[min])) {
                    min = j;
                }
            }
            // 将当前值与后面最小值交换
            exch(a, i, min);
        }
    }
}
